/*====================================== 
 * faxsun tool
 * 资讯专用的自定义插件集
 * 支持传入自定义参数 $(dom).fn(options)
 * 依赖于 jq.browser.js
 * 依赖于类名、id等选择器绑定，修改类名或者id时请注意相应修改js里的
 *====================================== */

/******************* 
 定义插件区
********************/
;
(function($) {
    // 聚焦鼠标滚动对象 弹出层时，鼠标在区域内，区域滚动，区域外，窗口滚动
    $.fn.focusSrcoll = function(flag) {
        if (flag == true || flag === "lock") {
            $(window).on("scroll.lock", function() {
                $(window).scrollTop(0);
            });
        } else if (flag == false || flag === "unlock") {
            $(window).off("scroll.lock");
        } else {
            $(window).scrollTop(0);
        }
    };

    // 针对目标元素 添加/移除 类名
    $.fn.changeClass = function(options) {
        var defaults = {
            target: ".tglTarget",
            className: "turn-panel"
        };
        var setting = $.extend({}, defaults, options);
        return this.each(function() {
            $(this).on("click", function() {
                $(setting.target).toggleClass(setting.className);
            });
        });
    };
    // 向下拉产生延滞效果
    $.fn.moveRetention = function() {
        var cl = arguments[0] ? arguments[0] : "movedown-retention";
        var _this = $(this);

        function mv() {
            _this.each(function(index, elem) {
                if ($(this).offset().top <= $(window).height() + $(window).scrollTop() + 120) {
                    if ($(this).hasClass(cl)) {
                        $(this).removeClass(cl);
                    }
                } else if ($(this).offset().top > $(window).height() + $(window).scrollTop() + 120) {
                    if (!$(this).hasClass(cl)) {
                        $(this).addClass(cl);
                    }
                }
            });
        }
        mv();
        $(window).on("resize", function() {
            mv();
        });
    };
    // 向下拉取数据
    $.fn.dropPush = function(child) {
        $.each($("body").find(this), function(index, elem) {
            var $infoList = $(elem);
            var url = $infoList.attr("data-url") != "" ? $infoList.attr("data-url") : "/";
            var maxpage = $infoList.attr("data-max") != "" ? $infoList.attr("data-max") : 4;
            var page = 1;
            var baseUrl = $infoList.attr("data-baseUrl");
            var flag = true;
            // alert(baseUrl)
            // 产生延滞效果
            $infoList.find(child).moveRetention();
            $(window).on("scroll", function() {
                // 重新产生延滞效果
                $infoList.find(child).moveRetention();
                if (page >= maxpage) {
                    return;
                } else {
                    if ($(document).height() <= ($(this).scrollTop() + $(this).height()+100)) {
                        if(flag){
                            flag = false;
                            var tempLoading = $("<li/>", {
                                "id": "tempLoading",
                                "html": "<span style='margin-left:10px'>范客君正在为您加载……</span>",
                                "style": "display: block;background-color: #f8f8f8;padding:10px 0;text-align: center;font-size:14px;color:#999;"
                            });
                            if (!$infoList.children("#tempLoading").get(0)) {
                                $infoList.append(tempLoading);
                            }
                            $.ajax({
                                type: "post",
                                url: encodeURI(url),
                                context: document.body,
                                data: {
                                    page: ++page
                                }
                            }).done(function(data) {
                                var $temp = $(data.toString());
                                var arr = $(data).find(child);
                                $infoList.find("#tempLoading").remove();
                                $infoList.append(arr);
                                if ($(".da-thumbs").get(0)) {
                                    $(".da-thumbs li .list-item-l").hoverdir({
                                        hoverDelay: 50,
                                        hoverElem: ".item-img div"
                                    });
                                }
                                // 重新产生延滞效果
                                $infoList.find(child).moveRetention();
                                flag = true;
                            });
                        }
                    }
                }
            });
        });
    };

})(jQuery);

/******************* 
 使用插件区
********************/

$(function() {
    // overlay方法依赖jquery.ua.js插件
    // alert($.ua().isQQ)
    // 给不遵循w3c标准的浏览器添加一个类名
    if ($.ua.isIe) {
        if (!$("html").hasClass("ie")) {
            $("html").addClass("ie");
        }
    } else if ($.ua.is360se || $.ua.is360ee) {
        if (!$("html").hasClass("ua_360")) {
            $("html").addClass("ua_360");
        }
    } else if ($.ua.isLiebao) {
        if (!$("html").hasClass("liebao")) {
            $("html").addClass("liebao");
        }
    } else if ($.ua.isSougou) {
        if (!$("html").hasClass("sougou")) {
            $("html").addClass("sougou");
        }
    } else if ($.ua.isQQ) {
        if (!$("html").hasClass("qq")) {
            $("html").addClass("qq");
        }
    } else if ($.ua.isFirefox) {
        if (!$("html").hasClass("firefox")) {
            $("html").addClass("firefox");
        }
    } else if ($.ua.isChrome) {
        if (!$("html").hasClass("chrome")) {
            $("html").addClass("chrome");
        }
    }


    // 选择头像弹出框
    $("#modifyavatar-overlay").click(function() {
        $("#modifyavatarBox").overlay();
        $("#modifyavatar-venus").trigger("click");
    });
    // 隐藏修改昵称面板
    $("#modifyname-form").hide();
    $("#modifySignature-form").hide();
    // 登录注册对话框 引入第三方插件
    $("#trigger-overlay").click(function() {
        $("#logBox").overlay();
    });
    $("body").on("click", "#share-panel", function() {
        $("#shareBox").overlay();
    });
    var closeOverlay = function() {
            $("#logBox").overlay();
            if ($(".tglTarget").hasClass("turn-panel")) {
                $(".tglTarget").removeClass("turn-panel");
            }
            if ($(".tglTarget").hasClass("hideDown")) {
                $(".tglTarget").removeClass("hideDown")
            }
            $(window).focusSrcoll(false);
        }
        //关闭登录弹出框
    $("#logBox .overlay-close").on("click.cls-overlay", closeOverlay);
    $("#logBox .overlay-close").on("click.cls-agree", function() {
        if ($(".agree-box").hasClass("showDown")) {
            $(".agree-box").removeClass("showDown");
        }
        $("#logBox .overlay-close").on("click.cls-overlay", closeOverlay);
    });
    //关闭分享弹出框
    $("#shareBox .overlay-close").on("click", function() {
        $("#shareBox").overlay();
    });
    // 关闭选择头像弹出框
    $("#modifyavatarBox .overlay-close").on("click", function() {
        $("#modifyavatarBox").overlay();
    });

    // 登录/注册面板切换
    $(".tglBtn").changeClass({
        target: ".tglTarget",
        className: "turn-panel"
    });
    // 显示协议
    $(".agreements").on("click", function() {
        $("#logBox .overlay-close").off("click.cls-overlay");
        $(".agree-box").addClass("showDown");
        $(window).focusSrcoll(true);
    });
    // 忘记密码
    $("body").on("click", ".forget,.turn-logpanel", function() {
        //$(".tglTarget").toggleClass("hideDown");
        //$(".forget-box").toggleClass("showDown");
    });




    // hoverdir方法依赖jq.hoverdir.js插件 产品列表页中定向滑动效果
    $(".da-thumbs li .list-item-l").hoverdir({
        hoverDelay: 50,
        hoverElem: ".item-img div"
    });


    // 处理资讯列表里面空标签乱套问题，统一设置为文本节点
    $.each($("body").find(".fixText"), function(index, elem) {
        var text = $(elem).text();
        $(elem).empty();
        $(elem).text($.trim(text));
    });

    // 处理资讯详情页中多余的空格 消除图片的缩进
    $.each($(".article-main"), function() {
        // 去掉首尾文本空格
        var _this = $(this);
        if (_this.children('p').children('span').length > 0) {
            $.each(_this.children('p').children('span'), function(index, elem) {
                if (this.firstChild) {
                    $(this.firstChild).each(function() {
                        if (this.nodeType == 3) {
                            this.nodeValue = $.trim(this.nodeValue);
                        }
                    });
                }
            });
        }
        // 去掉图片的缩进
        if (_this.children('p').children('img').length > 0) {
            $.each(_this.children('p').children('img'), function() {
                $(this).parent('p').css({
                    "textIndent": "0"
                });
            });
        }
        // 判断p元素子节点第一个是否文本节点，是则去掉首空格
        if (_this.children('p').children().length > 0) {
            $.each(_this.children('p'), function() {
                if ($(this).children('a').length > 0) {
                    $(this).children('a').each(function() {
                        if (this.hasChildNodes()) {
                            if (this.firstChild.nodeType == 3) {
                                this.firstChild.nodeValue = $.trim(this.firstChild.nodeValue);
                            } else if (this.firstChild.nodeType == 1) {
                                $(this).children().css({
                                    "color": "#0099f3"
                                });
                            }
                        }
                    });
                }
            });
        }
    });

    // 资讯列表向下滚动拉取数据
    $("#infoList").dropPush("li");
    $("#searchList").dropPush("li");
    $("#products").dropPush("ul");


    // 全局表单验证
    $('form').validate({
        onFocus: function() {
            this.parent().addClass('active');
            return false;
        },
        onBlur: function() {
            var $parent = this.parent();
            var _status = parseInt(this.attr('data-status'));
            $parent.removeClass('active');
            if (!_status) {
                $parent.addClass('error');
            }
            return false;
        }
    });
});
